package zhaoq_hero.superapp;

import android.content.Context;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.support.v7.widget.StaggeredGridLayoutManager;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;

import java.util.ArrayList;
import java.util.List;

/**
 * RecycleView的Demo:
 *
 *
 */
public class Android5Activity extends AppCompatActivity {

    private List<String> data;

    private RecyclerView recyclerView;
    private MyRecycleAdapter adapter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_android5);

        data = new ArrayList<String>();

        recyclerView = (RecyclerView) findViewById(R.id.recycle_viewid);

//        //2，设置布局管理器  ： 支持单列  线性   支持girdView模式   瀑布流模式
//        LinearLayoutManager layout = new LinearLayoutManager(
//            this,
////            LinearLayoutManager.VERTICAL,  //使用线性布局
//                LinearLayoutManager.HORIZONTAL,//使用  水平布局
//            false
//        );

        RecyclerView.LayoutManager layout = new StaggeredGridLayoutManager(
            2,
                StaggeredGridLayoutManager.VERTICAL
        );




        recyclerView.setLayoutManager(layout);

        //1，设置adapter  一定在设置了布局管理器之后  调用
        adapter = new MyRecycleAdapter(data);

        recyclerView.setAdapter(adapter);
    }

    /**
     *第一步：
     * 继承自RecycleView.Adapter用于显示数据  显示数据的时候需要定义并且使用 ViewHolder 必须要使用的
     * 复用视图  泛型为VH（ViewHolderl类）
     */
    private class MyRecycleAdapter extends RecyclerView.Adapter<ViewHolder>{


        private List<String> strings;

        public MyRecycleAdapter(List<String> strings) {
            this.strings = strings;
        }

        /**
         * 获取当前所有的数据总数
         * @return
         */
        @Override
        public int getItemCount() {

            int ret = 0;

            if (strings != null) {

                ret = strings.size();

            }

            Log.i("info","getItemCount");
            return ret;
        }

        /**
         * 根据ViewType创建或者加载特定的布局  将创建好的或者加载好的布局交给ViewHolder
         * 创建新的ViewHolder对象并且返回，因为RecycleView,在ViewHolder为null的情况下，才会调用这个方法
         *如果ViewHolder已经存在，那么不会进入这个方法，方法自身只负责Holder的创建  不负责处理数据
         * @param parent
         * @param viewType
         * @return
         */
        @Override
        public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
            Log.i("info","onCreateViewHolder");



            ViewHolder ret = null;

            View view = LayoutInflater.from(getApplicationContext()).inflate(
                    R.layout.item_recycle_view, parent, false);

            ret = new ViewHolder(view);

            return ret;
        }

        /**
         * 用于显示指定位置数据的内容  通过ViewHolder来进行相应控件的更新
         * @param holder
         * @param position
         */
        @Override
        public void onBindViewHolder(ViewHolder holder, int position) {

            Log.i("info","onBindViewHolder");


            holder.txtTitle.setText(strings.get(position));

            //
            int index = position%2;

            int resId = R.mipmap.ic_launcher;

            switch (index){

                case 0:
                    resId = R.mipmap.ic_launcher;
                    break;

                case 1:
                    resId = R.mipmap.logo_1;
                    break;

            }

            holder.imgIcon.setImageResource(resId);
        }
    }


    /**
     * 第二部：创建自己的ViewHolder  必须要继承自RecycleView.ViewHolder
     */
    private static class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {

        public ImageView imgIcon;

        public TextView txtTitle;

        public ViewHolder(View itemView) {
            super(itemView);

            //通常  ViewHolder 的构造  就使用获取控件视图的
            imgIcon = (ImageView) itemView.findViewById(R.id.item_view1);

            txtTitle= (TextView) itemView.findViewById(R.id.item_title1);

            // 后续处理点击事件
            itemView.setOnClickListener(this);

            getLayoutPosition();

        }

        @Override
        public void onClick(View v) {
            //实现点击事件。。

            int position = getAdapterPosition();

            Context context = itemView.getContext();

            Toast.makeText(context
                ,"你点击了第"+position+"个",Toast.LENGTH_SHORT).show();

        }

    }


    /**
     * 点击添加数据   并且更新  RercycleView
     * @param view
     */
    public void btnAdditem(View view){

        data.add(0,"Time"+System.currentTimeMillis());

        adapter.notifyDataSetChanged();

    }

    public void btnRemoveitem(View view){

        if (!data.isEmpty()) {

            data.remove(0);

        }

        adapter.notifyItemRemoved(0);

    }



}
